﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//#include<string.h>
//int main()
//{
//    int n = 0;
//    int i = 0;
//    scanf("%d", &n);
//    getchar();
//    char arr[10000] = { 0 };
//    char ch = 0;
//    int type_num = 0;
//    int flag1 = 1;
//    int flag2 = 1;
//    int flag3 = 1;
//    int j = 0;
//    for (i = 0; i < n; i++)
//    {
//        flag1 = 1;
//        flag2 = 1;
//        flag3 = 1;
//        type_num = 0;
//        j = 1;
//        //if (strlen(arr) < 8)
//        //{
//        //    printf("NO\n");
//        //    break;
//        //}
//        gets(arr);
//        if (strlen(arr) < 8)
//        {
//            printf("NO\n");
//            continue;
//        }
//        else
//        {
//            if (arr[0] >= '0' && arr[0] <= '9')
//            {
//                printf("NO\n");
//                continue;
//            }
//            else if (arr[0] >= 'a' && arr[0] <= 'z')
//            {
//                if (flag1)
//                {
//                    type_num++;
//                    flag1 = 0;
//                }
//
//            }
//            else if (arr[0] >= 'A' && arr[0] <= 'Z')
//            {
//                if (flag2)
//                {
//                    type_num++;
//                    flag2 = 0;
//                }
//            }
//            else
//            {
//                printf("NO\n");
//                continue;
//            }
//            for (j = 1; j < strlen(arr); j++)
//            {
//                if (arr[j] >= 'a' && arr[j] <= 'z')
//                {
//                    if (flag1)
//                    {
//                        type_num++;
//                        flag1 = 0;
//                    }
//
//                }
//                else if (arr[j] >= 'A' && arr[j] <= 'Z')
//                {
//                    if (flag2)
//                    {
//                        type_num++;
//                        flag2 = 0;
//                    }
//                }
//                else if (arr[j] >= '0' && arr[j] <= '9')
//                {
//                    if (flag3)
//                    {
//                        type_num++;
//                        flag3 = 0;
//                    }
//                }
//                else
//                {
//                    printf("NO\n");
//                    break;
//                }
//
//            }
//            if (type_num >= 2)
//            {
//                printf("YES\n");
//            }
//            else
//            {
//                printf("NO\n");
//            }
//        }
//        //int ch_first = getchar();
//        //if (ch_first >= '0' && ch_first <= '9')
//        //{
//        //    printf("NO\n");
//        //    break;
//        //}
//        //else if (ch >= 'a' && ch <= 'z')
//        //{
//        //    if (flag1)
//        //    {
//        //        type_num++;
//        //        flag1 = 0;
//        //    }
//        //    arr[j] = ch_first;
//
//        //}
//        //else if (ch >= 'A' && ch <= 'Z')
//        //{
//        //    if (flag2)
//        //    {
//        //        type_num++;
//        //        flag2 = 0;
//        //    }
//        //    arr[j] = ch_first;
//        //}
//
//
//    }
//    return 0;
//}



//https://leetcode.cn/problems/set-mismatch/

//
//集合 s 包含从 1 到 n 的整数。不幸的是，因为数据错误，导致集合里面某一个数字复制了成了集合里面的另外一个数字的值，导致集合 丢失了一个数字 并且 有一个数字重复 。

//给定一个数组 nums 代表了集合 S 发生错误后的结果。
//
//请你找出重复出现的整数，再找到丢失的整数，将它们以数组的形式返回。
//
//
//
//示例 1：
//
//输入：nums = [1, 2, 2, 4]
//输出：[2, 3]
//示例 2：
//
//输入：nums = [1, 1]
//输出：[1, 2]
//
//来源：力扣（LeetCode）
//链接：https ://leetcode.cn/problems/set-mismatch
//著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
// 
//int cmp(int* a, int* b)
//{
//	return * a  - *b;
//}
//
//int* findErrorNums(int* nums, int numsSize, int* returnSize)
//{
//
//	int* errorNums  = malloc(sizeof(int) * 2);
//	*returnSize  = 2;
//	int i = 0;
//	qsort(nums, numsSize, sizeof(int), cmp);
//	int prev  = 0;
//	for (i  = 0; i  < numsSize; i++)
//	{
//		int curr  = nums[i];
//		if (prev  == curr)
//		{
//			errorNums[0] = prev;
//		}
//		else if(curr  - prev  > 1)
//		{
//			errorNums[1] = prev  + 1;
//		}
//
//
//		prev  = curr;
//
//	}
//	if (nums[numsSize  - 1] != numsSize)
//	{
//		errorNums[1] = numsSize;
//	}
//	return errorNums;
//}




















